Amazon Connect コンタクトフローでAmazon Lexを利用時、スロットタイプ AMAZON. Numberは、発話で数字をどこまで認識してくれるか調査してみた
はじめに
ConnectとLexでコンタクトセンター向けチャットボットを構築時、ユーザーから数字を聞き取る場合は、LexのスロットタイプであるAMAZON.Number
を利用すると思います。
このAMAZON.Number
では、普段会話で使う数字の伝え方をどこまで認識するか、構築時に把握する必要がありますので、調査してみました。
具体的には、0から10までの数字や小数点つきの数字、数桁の数字など認識するかを検証しました。
まず、調査するための環境の作成方法をご説明します。
調査環境の作成
今回、調査するために、作成したボットとインテントの作成方法を説明します。
ボットの作成
- Lexのコンソール画面から、[ボットの作成]をクリックします。
- [空のボットを作成します]を選択し、ボット名を記載し、下記画像の通りに入力します。
- 日本語を選択し、音声はTakumiを選択し、[完了]をクリックします。
これでボットが作成できました。
インテントの作成
- インテントの[インテントを追加]から[空のインテントを追加]でインテントを作成します。
- インテント名を入力し、サンプル発話に「数字」を追加します。
- [スロットを追加]から、スロットタイプ[AMAZON.Number]を選択します。プロンプトと名前も記載します。
- スロット名を
number
としました。
- スロット名を
- [Confirmation]をアクティブにし、確認プロンプトに以下を記載します
{number}でよろしいでしょうか?
- インテントを保存後、Buildすると、インテントのテストが行えます。
コンタクトフローの作成
Connectインスタンスの作成や電話取得は、下記の記事を参考にしてください。
コンタクトフローの作成を解説します。
コンタクトフロー図は、下記のようになります。
音声の設定
音声は、Lexで設定した音声と同じにします。
今回は、Takumiを設定しております。
また、言語属性を設定にチェックをします。
顧客の入力を取得する
下記画像の通り、先程作成したLexボットとインテントを指定します。
Lexボットが表示されない場合、Connectインスタンスの設定で、Amazon Lex ボットを追加されていない可能性がありますので、ご確認ください。
ループ
今回は、1回の通話で多くテストしたかったため、ループを10回設定しました。
テスト方法
上記のコンタクトフローを設定し、電話番号とコンタクトフローを紐付けるとテストができます。
電話をかけて数字を発話して、Lexが認識するかテストができます。
調査結果
調査結果を出します。
調査日(2023年3月)時点でのLexの認識能力のため、時間が経てば認識能力が上がることで、より聞き取ってくれる可能性はあります。
0~10の数字
表のLexの認識のうち-
のところは、Lexが誤認識した箇所です。
数字の言い方のバリエーションは、Wikipediaを参考にしました。
発話内容 | Lexの認識 | 判定 |
---|---|---|
ぜろ | 0 | ○ |
れい | 0 | ○ |
いち | 1 | ○ |
ひとつ | - | × |
に | 2 | ○ |
ふた | - | × |
ふたつ | - | × |
さん | 3 | ○ |
みっつ | 3 | ○ |
よん | 4 | ○ |
よっつ | - | × |
し | 4 | ○ |
ご | 5 | ○ |
いつつ | 5 | ○ |
ろく | 6 | ○ |
むっつ | - | × |
なな | 7 | ○ |
ななつ | - | × |
しち | 7 | ○ |
ひち | 7 | ○ |
はち | 8 | ○ |
やっつ | - | × |
きゅう | 9 | ○ |
く | 9 | ○ |
ここのつ | - | × |
じゅう | 10 | ○ |
とお | 10 | ○ |
「ひとつ」などの「〇〇つ」の言い方は、認識されにくいですが、他は全て認識してくれていますね。
小数
発話内容 | Lexの認識 | 判定 |
---|---|---|
ぜろてんにいご | 0.25 | ○ |
れいてんにいご | 0.25 | ○ |
にいてんご | 2.5 | ○ |
さんじゅうにいてんよんいちご | 32.415 | ○ |
小数も認識していますね。
数字を一文字ずつ発話するパターン
入力内容 | Lexの認識 | 判定 |
---|---|---|
さんじゅうよん | 34 | ○ |
さんよん | 34 | ○ |
せんひゃくさんじゅうご | 1135 | ○ |
いちいちさんご | 1135 | ○ |
「さんよん」と一文字ずつ伝えても「34」と認識してくれました。
ただし、「さんよん」と伝えると、「さんよん」ではなく「さんじゅんよん」とConnect側から伝えられます
英語
入力内容 | Lexの認識 | 判定 |
---|---|---|
ワン | - | × |
スリー | - | × |
英語は、認識できないようです。
Lex側で日本語設定していることが原因だと推測します。
マイナスの数字
入力内容 | Lexの認識 | 判定 |
---|---|---|
まいなすごじゅうさん | -53 | ○ |
まいなすさんてんによん | -3.24 | ○ |
マイナスの数字も認識しました。
単位をつけた数字
入力内容 | Lexの認識 | 判定 |
---|---|---|
いっこ(1個) | 1 | ○ |
にこ(2個) | 2 | ○ |
さんこ(3個) | 3 | ○ |
さんびゃくえん(300円) | - | × |
にほん(2本) | - | × |
いちびょう(1秒) | - | × |
単位のうち「個」のみが、認識しました。
他の単位については、後述する方法で、他の単位も含めた数字を認識させることができます。
単位も含めた数字をLexに認識させる方法
「100円」を認識するように設定したいと思います。
- インテントのスロットから[詳細オプション]をクリックします
- サンプル発話に以下を追加し、スロットを更新します。
{number}円
- インテントのConfirmationのうち、確認プロンプトに「円」を加えた以下の通りに修正します。
{number}円でよろしいでしょうか?
- インテントを保存しビルド後、電話で「100円」と発話すると、認識しました。
Connect側での発話
ちなみに、Connect側で発せられる数字の発話は、以下になります。
数字 | Connectの発話 |
---|---|
0 | レイ |
1 | イチ |
2 | 二 |
3 | サン |
4 | ヨン |
5 | ゴ |
6 | ロク |
7 | ナナ |
8 | ハチ |
9 | キュウ |
10 | ジュウ |
「0」のことをConnect側では、「レイ」と発話するようです。
「ゼロ」と発話させたい場合、AWS LambdaとLexを連携する必要があります。
最後に
ConnectとLexのAMAZON.Numberを使用する際、数字をどこまで認識してくれるかある程度把握できました。
参考になれば幸いです。